#include <stdio.h>
#include <unistd.h>

#include "cmsis_os2.h"
#include "iot_gpio.h"
#include "iot_gpio_ex.h"
#include "ohos_init.h"

#define BUTTON_F1_GPIO 5
#define LED_GPIO  8

int led_status=0;

void Button_F1_Pressed(void)
{
    usleep(10 * 1000); 
    IotGpioValue F1Value;
    IoTGpioGetInputVal(BUTTON_F1_GPIO,&F1Value );
    if(F1Value == IOT_GPIO_VALUE0)
    {   
        printf("pressed\n");
        if(led_status == 1)
        {
            printf("turn off led\n");
            IoTGpioSetOutputVal(LED_GPIO,0);
            led_status = 0;
        }
        else
        {
            printf("turn on led\n");
            IoTGpioSetOutputVal(LED_GPIO,1);
            led_status = 1;
        }
    }
}

void Init_Led()
{
    IoTGpioInit(LED_GPIO);
    IoTGpioSetFunc(LED_GPIO, IOT_GPIO_FUNC_GPIO_8_GPIO);
    IoTGpioSetDir(LED_GPIO,IOT_GPIO_DIR_OUT);
}
void Init_Button()
{
    IoTGpioInit(BUTTON_F1_GPIO);
    IoTGpioSetFunc(BUTTON_F1_GPIO, IOT_GPIO_FUNC_GPIO_5_GPIO);
    IoTGpioSetDir(BUTTON_F1_GPIO, IOT_GPIO_DIR_IN);
    IoTGpioSetPull(BUTTON_F1_GPIO, IOT_GPIO_PULL_UP);

    IoTGpioRegisterIsrFunc(BUTTON_F1_GPIO, IOT_INT_TYPE_EDGE, 
                    IOT_GPIO_EDGE_FALL_LEVEL_LOW,
                    Button_F1_Pressed, NULL);
}
void Button_Interrupt_Demo()
{
    Init_Led();
    Init_Button();
}

APP_FEATURE_INIT(Button_Interrupt_Demo);